package eteam.aps.service;

import eteam.aps.model.dto.ProcessMaterialsDto;
import eteam.aps.model.dto.ProcessPreserveDto;
import eteam.aps.model.vo.moco_rders.MocoRdersDisplayVo;
import eteam.aps.model.vo.process_materials.ProcessMaterialsShowVo;
import eteam.aps.model.vo.process_materials.ProcessMaterialsVo;

import java.util.List;

/**
 * 工艺物料 业务层
 *
 * @author LiuLei
 */
public interface ProcessMaterialsService {

    /**
     * 根据 任务令 或 产品编号查询 物料信息
     *
     * @param mocCode 任务令
     * @param invCode 产品编号
     * @return 物料信息集
     */
    List<MocoRdersDisplayVo> getByMoList(String invCode, String mocCode) throws Exception;

    /**
     * 根据 任务令 或 产品编号查询 物料信息
     *
     * @param mocCode 任务令
     * @param invCode 产品编号
     * @return 物料信息集
     */
    ProcessMaterialsShowVo getPMByInvOrMoc(String invCode, String mocCode);

    /**
     * 产品编号查询
     *
     * @param invCode 产品编号
     * @return 物料信息集
     */
    List<ProcessMaterialsVo> getPMByInv(String invCode);

    /**
     * 根据 任务令查询 物料信息
     *
     * @param mocCode 任务令
     * @return 物料信息集
     */
    List<ProcessMaterialsVo> getPMByMoc(String mocCode);

    /**
     * 重写制令工序
     *
     * @param pmd 工序
     * @return 工序
     */
    ProcessMaterialsShowVo reWriteMocInfo(ProcessMaterialsDto pmd) throws Exception;

    /**
     * 重写产品工序
     *
     * @param pmd 工序
     * @return 工序
     */
    ProcessMaterialsShowVo reWriteInvInfo(ProcessMaterialsDto pmd) throws Exception;

    /**
     * 删除制令标准
     *
     * @param fId 内码
     * @return 删除的条数
     */
    int rmMocInfo(String fId);

    /**
     * 删除产品标准
     *
     * @param fId 内码
     * @return 删除的条数
     */
    int rmInvInfo(String fId);

    /**
     * 修改制令任务工单
     * @param processPreserveDto 制令工单
     * @return 修改的条数
     */
    int modMocInfo(ProcessPreserveDto processPreserveDto) throws Exception;

    /**
     * 修改产品任务工单
     * @param processPreserveDto 制令工单
     * @return 修改的条数
     */
    int modInvInfo(ProcessPreserveDto processPreserveDto) throws Exception;
}